use clap::Parser;
use wtask_base::{error::WResult, export::log_debug, logs::log_init};
use wtask_cli::{CMDSubConfig, CMDSubRun, CMDSubSync, CMDSubWebDav};





#[derive(Debug, Parser)]
#[command(author, version, about="wTask客户端，可以从终端连接machine", help_template = "\
{before-help}
{about-with-newline}
{usage-heading} {usage}
{all-args}{after-help}

Version: {version}
Author: {author-with-newline}
")]
enum CMDArgs {
    /// 配置该客户端
    Config(CMDSubConfig),
    
    /// 使用配置运行任务
    Run(CMDSubRun),

    /// 从远程同步任务
    Sync(CMDSubSync),
    
    /// 将远程的machine变为本地的WebDAV，WebDav登录时用户名是ip@port，密码是token
    /// 注意webdav windows挂载要求https
    /// 为了安全不支持数据删除操作
    WebDav(CMDSubWebDav)
}




fn main() -> WResult<()> {
    let args = CMDArgs::parse();
    match args {
        CMDArgs::Config(args_sub) => {
            log_init(&args_sub.log_args);
            args_sub.run()?;
        },
        CMDArgs::Run(args_sub) => {
            log_init(&args_sub.log_args);
            args_sub.run()?;
        },
        CMDArgs::Sync(args_sub) => {
            log_init(&args_sub.log_args);
            args_sub.run()?;
        },
        CMDArgs::WebDav(args_sub) => {
            log_init(&args_sub.log_args);
            args_sub.run()?;
        }
    }
    log_debug!("cmd exit2");
    Ok(())
}